package com.no1.musicmgr.mapper;

import com.no1.musicmgr.entity.User;
import org.apache.ibatis.annotations.Mapper;

import java.util.ArrayList;

@Mapper
public interface UserMapper {
    // -----------------------注册------------------------------------

    /**
     * 检查用户名是否唯一
     *
     * @param user_name 要检查的用户名
     * @return 返回用户的数量
     */
    Integer isYhmUnique(String user_name);

    /**
     * 检查用户名是否唯一
     *
     * @param user_name 要检查的用户名
     * @return 如果用户名唯一返回 true, 否则返回 false
     */
    boolean selectYhm(String user_name);

    /**
     * 添加用户 - 注册
     *
     * @param user 待添加用户
     * @return 成功返回 true, 失败返回 false
     */
    boolean register(User user);

    /**
     * 注册 - 添加 手机号/邮箱作为登入方式
     *
     * @param user 待添加用户
     * @return 成功返回 true, 失败返回 false
     */
    boolean registerAdd(User user);


    //-----------------------------登入---------------------------------


    /**
     * 查找用户 - 登录
     *
     * @param user 待查用户匹配条件
     * @return 返回 用户
     */
    User select(User user);

//用户查找模块
    /**
     * 查找用户 - 登录
     *
     * @param user_name 待查用户匹配条件
     * @return 返回 用户
     */
    User select1(String  user_name);
    /**
     * 模糊查询
     * 查找多个用户
     *
     * @param user 待查用户匹配条件
     * @return 返回 用户
     */
    ArrayList<User> list(User user);

    /**
     * 删除用户
     *
     * @param user_id 待删除用户 user_id
     * @return 成功返回 true, 失败返回 false
     */
    boolean deleteById(String user_id);


    // ----------------------更改------------------
    /**
     * 修改用户
     *
     * @param user 待修改用户
     * @return 成功返回 true, 失败返回 false
     */
    boolean update(User user);


    /**
     * 修改用户名
     *
     * @param user 待修改用户 user_id
     * @return 成功返回 true, 失败返回 false
     */
    boolean updateYhm(User user);


    /**
     * 修改密码
     *
     * @param user 待修改用户 user_id
     * @return 成功返回 true, 失败返回 false
     */
    boolean updatePwd(User user);


    /**
     * 修改密码
     *
     * @param user_id 待查询用户 user_id
     * @return 成功返回 true, 失败返回 false
     */
    User selectme(String user_id);

    /**
     * 根据user_id 查询用户
     *
     * @param user
     * @return
     */
    User selectById(User user);
}
